package com.fight.strive.sys.modules.cauth.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fight.strive.sys.modules.auth.dto.StriveAuthInfo;
import com.fight.strive.sys.modules.cauth.entity.AppClientEntity;
import com.fight.strive.sys.modules.common.PageR;
import com.fight.strive.sys.modules.redis.CacheInterface;

public interface AppClientService extends IService<AppClientEntity>, CacheInterface<AppClientEntity> {

    /**
     * 保存
     *
     * @param entity 应用
     */
    void saveAppClient(AppClientEntity entity);

    /**
     * 分页查询
     *
     * @param page 条件
     * @return 结果
     */
    IPage<AppClientEntity> listByPage(PageR<AppClientEntity> page);

    /**
     * 删除应用
     *
     * @param entity 应用
     */
    void removeAppClient(AppClientEntity entity);

    /**
     * 验证token的合法性
     *
     * @param appKey   appkey
     * @param token    token
     * @param timespan timespan 毫秒
     */
    AppClientEntity validToken(String appKey,
                               String token, String timespan);


    /**
     * 根据appkey获取应用
     *
     * @param appKey app key
     * @return 应用
     */
    AppClientEntity getByAppKey(String appKey);

    /**
     * 获取当前认证 token 的应用信息
     *
     * @param appKey appKey
     * @return auth info
     */
    StriveAuthInfo getAuthByAppKey(String appKey);
}
